<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 数组截取方法
        // slice(start,end)	选择数组的一部分，并返回选择后的新数组，不改变被操作的数组
        // splice(start,count)	选择数组的一部分，并返回选择后的新数组，改变被操作的数组
        //          从数组中添加/删除元素。
        
        let names = ["黎昕","明哲","锦程","浩","聪健","健雄","思聪","立辉","天翊"];
        let newNames = names.slice(2,5); // 从下标2截取到下标5 但不包含5
        console.log(newNames);
        console.log(names);

        let names1 = ["黎昕","明哲","锦程","浩","聪健","健雄","思聪","立辉","天翊"];
        let newNames1 = names1.splice(2,5); // 从下标2开始截取，截取5个元素
        console.log(newNames1);
        console.log(names1);

        // 基于 splice 删除指定位置的数据
        let names2 = ["黎昕","明哲","锦程","浩","聪健","健雄","思聪","立辉","天翊"];
        names2.splice(3,1); // 删除下标3的元素
        console.log(names2);
        
        // 数组拼接方法
        // concat()	连接数组并返回连接后的数组。
        let arr1 = ["浩","聪健"];
        let arr2 = ["健雄","思聪","立辉"];
        let arr3 = ["黎昕","天翊"];
        let newArr = arr1.concat(arr3,arr2);
        console.log(newArr);

        // 指定位置插入新元素
        let nums = [26,16,98,41,93,38,90]; // [41,93,38,90]
        let tempNums = nums.splice(0,3); // => [26,16,98]
        let newNums = tempNums.concat( [999],nums );
        console.log(newNums);
        

        // 数组转换方法
        // join()	将数组的所有元素连接成一个字符串。
        let names3 = ["黎昕","明哲","锦程","浩"];
        let str = names3.join("-");
        console.log(str);
        
        let str1 = names3.join();
        console.log(str1);
        
        let str2 = names3.join(""); // ==> 该操作不可逆
        console.log(str2);

        // 数组排序方法
        // sort( callback(item1,item2){ …… }  )	对数组的元素进行排序。
        //          return 正值 表示调整位置  return 负值和0表示不调整位置
        let nums1 = [26,16,98,41,93,38,90,64,12];
        nums1.sort( function(item1,item2){
            return item1 - item2;
        } );
        console.log(nums1);
        
        let nums2 = [26,16,98,41,93,38,90,64,12];
        nums2.sort( function(item1,item2){
            return item2 - item1;
        } );
        console.log(nums2);

        // sort()	对数组的元素进行排序。
        //          不传递任何参数时，基于ASSII码进行逐位升序
        let nums3 = [26,16,98,41,100,121,93,38,90,64,12];
        nums3.sort();
        console.log(nums3);
        
        let names4 = ["黎昕","明哲","a","A","浩","c",65];
        names4.sort()
        console.log(names4);
        
        // reverse()	反转数组中元素的顺序。
        let nums4 = [26,16,98,41];
        console.log( nums4.reverse() );

        // 字符串反转
        let str3 = "abcdef";
        str3 = str3.split("").reverse().join("");
        console.log(str3);
        
        // 数组元素处理方法
        // filter( callback(v,i,arr){ return true|false } )	
        //          通过自定义回调函数，判断元素是否满足条件，
        //          最后将满足条件的元素组成新的数组返回
        let nums5 = [26,16,98,41,93,38,11,90,64,12];
        let newNums1 = nums5.filter( function(v){
            return v % 2 !== 0
        } );
        console.log(newNums1);

        // map( callback(v,i,arr){ return 处理后的v } )	
        //          使用为每个数组元素调用函数的结果创建新数组。
        let nums6 = [26,16,98,41,93,38,11,90,64,12];
        let newNums2 = nums6.map( function(v){
            return v*2;
        } );
        console.log(newNums2);
        



    </script>
</head>
<body>
    
</body>
</html>